home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / µSim 1.0.5 / FabLibsƒ / Conversions.c next >
Encoding:
C/C++ Source or Header  |  1995-10-23  |  1.7 KB  |  119 lines  |  [TEXT/CWIE]

  1. #include    "Conversions.h"
  2.  
  3. //#pragma smart_code
  4.  
  5. char *NumToHex2(unsigned long n, short digits);
  6.  
  7. /*
  8.  * NumToHex - fixed length, returns a C string
  9.  */
  10. Ptr ShortToHexText(short n, Ptr text)
  11. {
  12. const char *conv = "0123456789ABCDEF";
  13. register int    i;
  14.  
  15. text += 4;
  16. for (i = 4; i != 0; n >>= 4, --i)
  17.     *--text = conv[n & 0xf];
  18. text += 4;
  19. return text;
  20. }
  21.  
  22. /*
  23.  * NumToHex2 -- allows variable length, returns a Pascal string.
  24.  */
  25.  
  26. void ShortToHexString(short n, Str255 out)
  27. {
  28. const char *conv = "0123456789ABCDEF";
  29. register int    i;
  30.  
  31. *out++ = 4;
  32. out += 4;
  33. for (i = 4; i != 0; n >>= 4, --i)
  34.     *--out = conv[n & 0xf];
  35. return;
  36. }
  37.  
  38. void ShortToOctString(short n, Str255 out)
  39. {
  40. const char *conv = "01234567";
  41. register int    i;
  42.  
  43. *out++ = 6;
  44. out += 6;
  45. for (i = 5; i != 0; n >>= 3, --i)
  46.     *--out = conv[n & 0x7];
  47. *--out = conv[n & 0x1];
  48. return;
  49. }
  50.  
  51. void ShortToBinString(short n, Str255 out)
  52. {
  53. const char *conv = "01";
  54. register int    i;
  55.  
  56. *out++ = 16;
  57. out += 16;
  58. for (i = 16; i != 0; n >>= 1, --i)
  59.     *--out = conv[n & 0x1];
  60. return;
  61. }
  62.  
  63. void HexStringToShort(ConstStr255Param in, short *p)
  64. {
  65. register int    i;
  66. register short tmp, ris = 0;
  67.  
  68. i = *in++;
  69. i--;
  70. i <<= 2;
  71. for ( ; i >= 0; i -= 4 ) {
  72.     tmp = *in++;
  73.     tmp -= 48;
  74.     if (tmp > 9)
  75.         tmp -= 7;
  76.     tmp <<= i;
  77.     ris += tmp;
  78.     }
  79. *p = ris;
  80. return;
  81. }
  82.  
  83. void OctStringToShort(ConstStr255Param in, short *p)
  84. {
  85. register short tmp, i, ris = 0;
  86.  
  87. i = *in++;
  88. i--;
  89. tmp = i;
  90. i <<= 1;
  91. i += tmp;
  92. for ( ; i >= 0; i -= 3 ) {
  93.     tmp = *in++;
  94.     tmp -= 48;
  95.     tmp <<= i;
  96.     ris += tmp;
  97.     }
  98. *p = ris;
  99. return;
  100. }
  101.  
  102. void BinStringToShort(ConstStr255Param in, short *p)
  103. {
  104. register int    i;
  105. register short tmp, ris = 0;
  106.  
  107. i = *in++;
  108. i--;
  109. for ( ; i >= 0; i-- ) {
  110.     tmp = *in++;
  111.     tmp -= 48;
  112.     tmp <<= i;
  113.     ris |= tmp;
  114.     }
  115. *p = ris;
  116. return;
  117. }
  118.  
  119.